Organizations are increasingly capturing, indexing, analyzing, and updating voluminous amounts of data during the normal course of conducting their business. Accordingly, organizations now rely heavily on electronic data for purposes of managing, tracking, and forecasting their business. This data is often captured and stored in one or more data stores, such as databases, which may also sometimes be organized as a data warehouse.
A variety of software vendors provide applications (utilities or services) that assist organizations with more efficiently accessing their data within the data stores. Some applications offer improved access capabilities which can be processed in parallel. Applications such as these improve processing throughput for reading and writing large amounts of data from and to the data store. That is, these applications are threaded which means that multiple copies of these applications concurrently process against the data store. By doing this, operations complete more quickly which can be of vital importance when several gigabytes of data need to be processed against the data store.
However, as the number of threaded applications increase within a computing environment and concurrent access attempts are made by these applications for the data being managed by the data store, performance can degrade. This is so, because the data is centrally managed and controlled in order to keep it in proper synchronization. As a result, as the number of threaded write applications increase and attempt to concurrently update the data store, the performance of the data store degrades. Thus, parallel processing may not always improve performance and, in some instances with a proper processing state, may actually degrade performance.
As a consequence of this, many vendors or computing environments will include soft limits on the number of instances of threaded applications which can be instantiated and processed at any particular time. In other circumstances, the data store will include a hard limit that prevents it from communicating with more than N (some integer number greater than 0) instances of a threaded application.
Conventionally, data store applications have been threaded to improve interactions with a data store. However, these conventional threaded applications can actually degrade performance based on multiple simultaneous access attempts being made against the data store. Moreover, conventional threaded applications are often limited by hard or soft configurations which recognize there is a point of diminishing returns associated with an optimal number of treaded applications processing within a computing environment.
Therefore, there is a need for improved techniques that manage interactions between threaded applications and a data store.